Getting Started with W3DS
Welcome to W3DS (Web 3 Data Spaces) - a decentralized data synchronization protocol that puts users in control of their data.
What is W3DS?
W3DS is a protocol that enables seamless data synchronization across multiple platforms while ensuring users own and control their data. Instead of platforms storing user data in silos, W3DS allows users to store their data in their own eVaults and have platforms sync from these vaults.
Core Concept
The fundamental principle of W3DS is simple: Users, groups, and objects own their own eVaults. All data about a person, group, or object is stored in their eVault, and platforms act as frontends that display and interact with this data, while also serving as caches and aggregators for improved performance and user experience.
Key Principles
-
Data Ownership & Decentralized Storage: Users own their data, not platforms. Each user has their own eVault for data storage, ensuring true data ownership and control.
-
Platform Independence & Automatic Synchronization: Platforms are interchangeable frontends that automatically synchronize data, while also serving as caches and aggregators. Data created on one platform automatically appears on all platforms, enabling true interoperability across the ecosystem.
How It Works: A Simple Example
Imagine User A creates a post on Blabsy (a social media platform):
- User A posts "Hello, world!" on Blabsy
- Blabsy's Web3 Adapter syncs the post to User A's eVault
- User A's eVault stores the post and notifies all registered platforms
- Pictique (another social media platform) receives the notification
- Pictique creates the post locally - User A's post automatically appears on Pictique through the synchronization system
This is the power of W3DS: your data follows you across all platforms automatically.
Architecture Overview
Key Components
eVault Core
The eVault Core is the central storage system that manages user data. It provides:
- GraphQL API for storing and retrieving data using MetaEnvelope storage for structured data
- Webhook delivery to notify platforms of data changes
- Access control via ACLs (Access Control Lists)
Web3 Adapter
The Web3 Adapter is a library that platforms use to:
- Handle bidirectional data synchronization between local databases and eVaults
- Convert between platform-specific schemas and global ontology schemas
Registry Service
The Registry Service provides:
- W3ID resolution: Maps eNames (like
@user-a.w3id) to eVault URLs - Key binding certificates: Stores user public keys for signature verification (used when platforms verify user signatures during authentication). See eVault — Key Binding Certificates and Registry.
- Platform registration: Tracks active platforms for webhook delivery
Platforms
Platforms are applications that:
- Display and interact with user data
- Act as caches and aggregators for improved performance
- Sync data to/from user eVaults
- Convert between local and global data schemas
- Handle webhooks to receive data updates
Data Flow
When a user creates data on a platform:
User Action → Platform Database → Web3 Adapter → User's eVault → Webhooks → All Platforms
- User Action: User creates a post, message, or other data
- Platform Database: Platform stores data locally
- Web3 Adapter: Adapter converts data to global schema and syncs to eVault
- User's eVault: eVault stores the data as a MetaEnvelope
- Webhooks: eVault sends webhooks to all registered platforms (except the originating one)
- All Platforms: Other platforms receive webhooks and create the data locally
Note: This is a simplified overview of the data flow. The current implementation uses a basic webhook delivery mechanism. For production deployments, platforms should implement message delivery queues to handle eVault and platform downtime gracefully, ensuring reliable data synchronization.
Detailed Data Flow Sequence
The following sequence diagram shows the detailed interactions between components, including the Web3 Adapter's internal implementation:
Registration Sequence
The following sequence diagram shows how a new user registers and creates their eVault, illustrating the roles of the Provisioner (production URL) and Registry services:
The Provisioner hosts /provision; the Registry resolves eNames and issues key binding certificates; eVault Core stores user data.
Next Steps
- Learn more about W3DS Basics - Deep dive into eVault ownership and data flow
- Understand Authentication - How users authenticate with platforms
- Learn about Signing - Signature creation and verification
- Explore Signature Formats - Technical details on cryptographic signatures
- Build a platform with the Post Platform Guide - Step-by-step guide to creating a W3DS-compatible platform